The identity (or ethnicity) of Uriah the Hittite is not simple: on one
hand he is called a "Hittite"; on the other he has a clearly Yahwistic name.
Besides his "label", there are no refferences to his being non-Israelite,
and the story makes it quiet clear that he was the most loyal of David's
soldiers. It is ofter assumed that he was either a "Hittite" who had
"converted" to Yahwism, or an Israelite who was called "Hittite" because" of
his manners, dress or whatever. In either case, Kenneth's assumption that
his marriage to Bathseba was not binding would not hold.
Had his marriage to Bathsheba NOT been binding, there would have been no
reason for David to make such efforts to cover up his deed, and Uriah would
never have been killed. David could have simply announced that the marriage
of Israelite Bathsehba to Hittite Uriah was not binding, and taken her.
Just so you know, there is a discussion in the Talmud (I don't have the
precise reference at my fingertips right now) that follows a similar line:
David, obviously, could not have committed adoultery. How so? becoause in
ancient Israel, before soldiers went off to war, they gave their wives
"conditional writs of devorce", so that if they dissappeared, their wives
would be able to remarry (otherwise, with no body to prove that they were
widowed, the wives are trapped as "agunot" - "anchored" to their marriages
and unable to rewed). This being true, Bathsheba was actually devorced at
the time when David "took" her. Now haw do we know this? Well, since David
never sinned, he would not have taken Bathseba if she were married!
All said, I think that the simplest reading is the correct one: David
sinned by taking a married woman, sinned even more when he tried to cover up
his deed, was punnished by God and the repented. David is as human as any of
us, and God's mercy is extended even to adaulterers and murderers, if their
punishment is complete and their repentence is true.